# sun_logger.py
import logging
import sys
from typing import Optional

def _create_logger(
    name: str = "DLOG",
    level: int = logging.INFO,
    fmt: Optional[str] = None
) -> logging.Logger:
    """
    创建并配置一个标准的日志记录器。
    Args:
        name: logger 名称，默认 "DLOG"
        level: 日志级别，默认 INFO（会输出 INFO, WARNING, ERROR, CRITICAL）
        fmt: 日志格式字符串，若为 None 则使用默认格式
    Returns:
        配置好的 Logger 实例
    """
    if fmt is None:
        fmt = '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
    
    logger = logging.getLogger(name)
    logger.setLevel(level)

    # 避免重复添加 handler（重要！）
    if not logger.handlers:
        handler = logging.StreamHandler(sys.stdout)
        formatter = logging.Formatter(fmt, datefmt='%Y-%m-%d %H:%M:%S')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
        logger.propagate = False  # 防止被 root logger 重复打印

    return logger


# 全局 logger 实例（模块加载时立即创建）
logger = _create_logger()

# === 便捷函数（可选）===
def log_debug(msg: str):
    logger.debug(msg)

def log_info(msg: str):
    logger.info(msg)

def log_warn(msg: str):
    logger.warning(msg)

def log_error(msg: str):
    logger.error(msg)

def log_criti(msg: str):
    logger.critical(msg)

# === 导出接口 ===
__all__ = [
    "logger", 
    "log_debug", 
    "log_info", 
    "log_warn",
    "log_error", 
    "log_criti"
]
